using System.Runtime.InteropServices;

namespace Module_Debug
{
    public class DLLStructure
    {
        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)] //pack=1
        public struct gammaParam_t
        {
            public float fTargetx;
            public float fTargety;
            public float fTargetLv;
            public float fTargetGamma;
            public float fTolerance;
            public int nScale;

            public float fBlackLv;

            public float fVGMP;
            public float fVGSP;

            public int nFixVGSP;

            [MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 9)]
            public float[] fxyYForRGB;

            public int nCoefGammaNum;
            [MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 5)]
            public int[] anCoefGamma;
            [MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 15)]
            public float[] coefxyY;

            public int nGammaPointNum;
            [MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 24)]
            public int[] anGammaPoint;
        }

        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)] //pack=1
        public struct irParam_t
        {
            public int nHighGray;
            public int nLowGray;
            public int nHeight;
            public int nWidth;
            public int nblkImgSize;
            public int nNotchHeight;
            public int nColorSel;
            public int nSPRType;

            public float fTargetx;
            public float fTargety;
            public float fTargetGamma;
            public float fTolerance;

            public float fTargetLv;
            public float fHBMTargetLv;

            public int nNorPoint;
            public int nHBMNorPoint;
            public int nCompGL;

            public float fVGMP;
            public float fVGSP;

            [MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 3)]
            public float[] fPara2;

            public int nGammaPointNum;
            [MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 24)]
            public int[] anGammaPoint;
        }

        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)] //pack=1
        public struct irSetting_t
        {
            public int nNorPoint;
            public int nHBMNorPoint;

            public float fVGMP;
            public float fVGSP;
            public float fHBMVGMP;
            public float fHBMVGSP;

            [MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 3)]
            public float[] fPara1;
            [MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 3)]
            public float[] fPara2;
            [MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 3)]
            public float[] fRatio;
            [MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 3)]
            public float[] fHBMRatio;
            [MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 4)]
            public float[] fGammaforR;

            [MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 36)]
            public float[] fPara3Lut;
            public int HBMscale;
        }

    }
}